/*
+--------------------------------------------------------------------------
|   Mblog [#RELEASE_VERSION#]
|   ========================================
|   Copyright (c) 2014, 2015 mtons. All Rights Reserved
|   http://www.mtons.com
|
+---------------------------------------------------------------------------
*/
package com.mtons.mblog.modules.service;

import com.mtons.mblog.modules.data.CommentVO;
import com.mtons.mblog.modules.entity.Comment;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 业务层接口
 * @author langhsu
 *
 */
public interface CommentService {

	/**
	 * 分页
	 * @param pageable
	 * @return
	 */
	Page<CommentVO> paging4Admin(Pageable pageable);

	/**
	 * 分页
	 * @param pageable
	 * @param authorId
	 * @return
	 */
	Page<CommentVO> pagingByAuthorId(Pageable pageable, long authorId);

	/**
	 * 查询评论列表
	 * @param pageable
	 * @param postId
	 */
	Page<CommentVO> pagingByPostId(Pageable pageable, long postId);

	/**
	 * 最新评论
	 * @param maxResults
	 * @return
	 */
	List<CommentVO> findLatestComments(int maxResults);

	/**
	 * 查找评论
	 * @param ids
	 * @return
	 */
	Map<Long, CommentVO> findByIds(Set<Long> ids);

	/**
	 * 查找评论
	 * @param id
	 * @return
	 */
	Comment findById(long id);
	
	/**
	 * 发表评论
	 * @param comment
	 * @return
	 */
	long post(CommentVO comment);

	/**
	 * 删除
	 * @param ids
	 */
	void delete(List<Long> ids);

	/**
	 * 删除
	 * @param id
	 * @param authorId
	 */
	void delete(long id, long authorId);

	/**
	 * 删除
	 * @param postId
	 */
	void deleteByPostId(long postId);

	/**
	 * 计数
	 * @return
	 */
	long count();

	/**
	 * 计数
	 * @param authorId
	 * @param postId
	 * @return
	 */
	long countByAuthorIdAndPostId(long authorId, long postId);
}
